#if (FEATURE_MODE == 0)
/**
  @file ctc_tmx_dtel.h

  @author Copyright (C) 2018 Centec Networks Inc.  All rights reserved.

  @date 2018-12-28

  @version v6.0

  The module provides visualization related features.

 \b
 \p
 Data plane telemetry support INT,IFA,TSX,TEX,TIX export and other functions. These functions are service for visualization.
 \p

 \b
 \p
 Inband Network Telemetry ("INT") is a framework designed to allow the collection and reporting of network state, by the data plane,
 without requiring intervention by the control plane in collection and deliverying the state from the data plane.
 It supports two modes, inband mode and postcard mode. Accurately match a flow according to ACL, and specify this device as source node,
 transit node or sink node. The source node adds an INT header to a specific stream, and inserts the device information that collects this hop
 into the stream. The transit node is responsible for identifying the INT stream, and inserts the device information that collects this hop
 into the stream. The sink node is responsible for identifying the INT stream, and inserts the device information that collects this hop
 into the stream, and report all collected device information to the remote device.
 \p

 \b
 \p
 Inband Flow Analyzer ("IFA") records flow specific information from an end station and/or switches across a network.
 \p

 \b
 \p
 Telemetry Statistics eXport ("TSX")  is a framework designed to collect various statistics and report it to the remote device. It supports the
 following types of information collected: mac-stats, queue-stats, buffer-stats, latency-stats, buffer-watermark and latency-watermark.
 \p

 \b
 \p
 Telemetry Events eXport ("TEX")  is a framework designed to report kinds of events to the remote device. It supports to report the following types of event: drop-event,
 buffer-event and latency-event.
 \p

 \b
 \p
 Telemetry Informations eXport ("TIX")  is a framework designed to report kinds of informations which generated from the chip in real time to the remote device.
 \p

*/


#ifndef _CTC_USW_DTEL_H
#define _CTC_USW_DTEL_H
#ifdef __cplusplus
 extern "C" {
#endif

#include "sal.h"
#include "ctc_const.h"
#include "ctc_dtel.h"

 /****************************************************************
 *
 * Defines and Macros
 *
 ****************************************************************/

 /****************************************************************
  *
 * Function
 *
 ****************************************************************/
 /**
  @addtogroup dtel DTEL
  @{
 */

 /**
  @brief  Set property

  @param[in] lchip  local chip id

  @param[in] type   configured type

  @param[in] value user data

  @remark[TMM] This function to set dtel property

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_set_property(uint8 lchip, ctc_dtel_property_t type, void* value);

 /**
  @brief  Get property

  @param[in] lchip  local chip id

  @param[in] type   configured type

  @param[in] value user data
  
  @remark[TMM] This function to get dtel property

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_get_property(uint8 lchip, ctc_dtel_property_t type, void* value);


 /**
  @brief  Set INT config

  @param[in] lchip    local chip id

  @param[in] p_cfg    INT config

  @remark[TMM] This function to set INT config

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_set_int_cfg(uint8 lchip, ctc_dtel_int_cfg_t* p_cfg);


 /**
  @brief  Get INT config

  @param[in] lchip    local chip id

  @param[in] p_cfg    INT config

  @remark[TMM] This function to get INT config

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_get_int_cfg(uint8 lchip, ctc_dtel_int_cfg_t* p_cfg);

 /**
  @brief  Set IFA config

  @param[in] lchip    local chip id

  @param[in] p_cfg    IFA config

  @remark[TMM] This function to set IFA config

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_set_ifa_cfg(uint8 lchip, ctc_dtel_ifa_cfg_t* p_cfg);


 /**
  @brief  Get IFA config

  @param[in] lchip    local chip id

  @param[in] p_cfg    IFA config

  @remark[TMM] This function to get IFA config

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_get_ifa_cfg(uint8 lchip, ctc_dtel_ifa_cfg_t* p_cfg);


 /**
  @brief  Dtel init

  @param[in] lchip	  local chip id

  @param[in] p_global_cfg	 init global config

  @remark[TMM] This function initialize tables and registers structures for DTEL module.

  @return CTC_E_XXX

*/

extern int32
ctc_tmx_dtel_init(uint8 lchip, void* p_global_cfg);

 /**
  @brief De-Initialize efd module

  @param[in] lchip	  local chip id

  @remark[TMM]  User can de-initialize the efd configuration

  @return CTC_E_XXX

*/
extern int32
ctc_tmx_dtel_deinit(uint8 lchip);


 /**@} end of @addgroup   */

#ifdef __cplusplus
 }
#endif

#endif

#endif

